vueでtodo appのprototypeを作る練習Log
/icons/vue.js.iconでtakker-schedulerのprototypeとなるappを作る練習の作業log
/icons/hr.icon
最低目標の仕様
データ
予定の名前
予定開始時刻
予定終了時刻
実績開始時刻
実績終了時刻
予定内容の詳細を書いた/icons/Scrapbox.iconのページへのリンク
行動Logを書いた/icons/Scrapbox.iconのページへのリンク
認証あり
0から始める Firestore + Firebase Authentication - Qiitaの設計を参考にする
UI
タスク作成欄
改行区切りで入力
Shift+Enter
作成ボタンを押すか、Enterキーを押すと作成
YYYY-MM-DDは隠せるようにする
jkキーでタスク選択
Sキーで実績開始時刻を記入
タスク開始
経過時間にどのくらい経過しているか表示される
見積もり時間前なら緑、過ぎたら赤
Eキーで終了時刻を記入
rキーで/icons/Scrapbox.iconページに飛ぶ
セルのクリックで編集できるようにする
projectを作成する
/icons/done.icon/icons/firebase.iconvue-todo-practice
security ruleはtest modeにした
あとで設定する
/icons/done.icon/icons/vue.js.iconvue-todo-practice
linterの設定
/icons/done.icon10:29:49
データの作成
こんな感じのJSON dataが作れればいい
code:todo.json
{
"title": "ひるごはんを食べる",
"description": "${URL}",
"scheduleTime": {start: "${start}", end: "${end}"},
"actualTime": {start: "${start}", end: "${end}"},
"log": "{URL}",
}
10:55:26 できた
/users/{userId}/schedules/{scheduleId}/
code:schedule.json
{
"title": "ひるごはんを食べる",
"description": "${URL}",
"timeSpan": {start: "${start}", end: "${end}"},
"records": {
"timeSpans": {start: "${start}", end: "${end}"},
"log": "{URL}",
},
}
予定と記録は1 to N 対応なので、scheduleにrecordをもたせた
10:58:53 security ruleの設定をした
firestoreのsecurity rule
11:04:02 API keyの設定をした
11:08:33 0から始める Firestore + Firebase Authentication - Qiitaをコピペ
これだけでは動きそうにない
ログイン画面を作る方法を調べる
Firebaseで認証システムを作る
13:45:38 とりあえずうごいた
認証するようになった
複数タスクを追加し、それらをリストに表示するようにした
ちゃんとは表示できていない
14:07:51 interfaceを分離したら謎のエラーが出た
Failed to compile.
src/views/Home.vue:130:10
TS2459: Module '"../types/Schedule"' declares 'Schedule' locally, but it is not exported.
128 | import { db } from '@/plugins/firebase';
129 | import { TimeSpan } from '@/types/TimeSpan';
> 130 | import { Schedule } from '@/types/Schedule';
| ^^^^^^^^
131 |
132 | function makeSchedule(docQuery: firestore.QueryDocumentSnapshot): Schedule {
133 | const data = docQuery.data();
わからんtakker.icon
18:41:48 わけわからないので中断する
2020-09-09 00:48:16
↑は再起動したら直った
cacheの問題?
本当に訳わからなすぎる
機能を分割して整理する
認証機能
dataのloading
02:10:11
認証情報とLogin画面を分離した
認証情報はInjectionKeyを使って複数のcomponent (vue)で使えるようにした
Vue Composition API を使ったストアパターンと TypeScript の組み合わせはどのくらいスケールするか? - Qiita
↑に図解を入れて焼き直した記事
Vue3 Composition APIにおいて、Providerパターン(provide/inject)の使い方と、なぜ重要なのか、理解する。 - Qiita
02:12:23 あと、Cloud firestoreとやり取りする部分を分離したい
外部に公開するもの
/icons/done.iconデータそのもの
/icons/done.iconデータの追加
データの更新
データの削除
/icons/done.icon更新監視開始
/icons/done.icon更新監視終了
他に分割するやつ
タスクの入力フォーム
タスクの一覧
その他ボタン
タイマー
Javascriptで音を鳴らす - yamblog
Vue.jsとCSSアニメーションでラーメンタイマーを作る + Firebaseで簡単公開 - Qiita
06:20:52 data管理とlogin状態保持を別のcomponentに分離できた
いい感じ
とりあえずloginまで作った
navbarの見た目を整えたら、commitする
App.vueにnavbarを移動する
06:54:47 見た目完成
https://gyazo.com/e692ef695f0965c55badc63442913bf0
Bulma使いやすいなあtakker.icon
class名を入れるだけできれいなのが簡単に作れる
便利takker.icon*3
06:57:43 commitする
/icons/done.icon07:00:58
TaskBoard.vueを表示する
新しいrouterとして定義する
07:11:36 出来た
log out後に、taskが残ってしまう問題があることがわかった
log outしたら、schedulesにあるタスクを全て消すことにする
07:21:23 出来た
mobile画面だとメニューが消えてしまうので、hamburger menuを追加する
responsive designというらしい
/icons/done.icon07:39:36 できた
/icons/vue.js.iconコード書く必要があった
Bulma CSS + Vue.js でNavbarのハンバーガーメニューの実装 - YoshinoriN's Memento
そういえば、もうdeploy出来る状態か。
security ruleは厳格にしてあるから、公開して問題ない
07:43:05 じゃあdeployしよう
/icons/done.icon07:45:07 成功!
もう慣れたから簡単になったtakker.icon
vue-todo-practice
/icons/done.icon07:50:42 mobileからの接続&操作確認終了
タスクの編集機能を実装する
とりあえずこれらを実装するか
一括追加
/icons/done.icon08:34:10
+アイコンを押すとテキストエリアが開く
空行は無視
削除
/icons/done.icon08:41:59
更新監視に、削除の監視を入れていなかった
08:57:10 /icons2/smartphone.iconから追加できなかったので、追加できるようにした
shortcut keyだけでは、/icons2/smartphone.iconから操作できない
更に編集機能を追加する
09:45:44 ↑↓キーで項目移動できるようにした
HTMLElement.focus()が有効な<input>要素を使った
各項目に、配列の番号から生成したidを割り振り、それを使って項目移動を実装した
bulma-tooltipを使ってみる
詳細な時刻表示に使う
11:10:48 <abbr>が代わりに使えるとわかった
bulma-tooltipは使わないことにする
<table>を使うことにする
11:20:56 いい感じの表になったぞ!!takker.icon*2
https://gyazo.com/6dc135b40aa9f6c10010cceffa199b8f
でもmobileだと途切れちゃう……
11:59:01 タッチでスクロールできたので問題なかった
すでにPWA化できることに気づいた
素晴らしいtakker.icon*3
14:02:13 firebase.auth().signInWithRedirectでログインしようとしたがうまく行かなかった
あと、firebase.auth.Auth.Persistence.LOCALで認証の永続化を試したがダメだった
今すぐ必要な機能ではないので、後でゆっくり考える
認証状態の永続性  |  Firebase
#vue.js
#2020-09-09 00:48:43
#2020-09-08 10:01:26